class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        // 双指针法
        // 1.cur遍历数组
        // 2.遇到非零值时++prev并交换
        // 3.cur++继续往后迭代
        // 时间复杂度：O(1)
        for (int cur = 0, prev = -1; cur < nums.size(); cur++)
            if (nums[cur] != 0)
                swap(nums[++prev], nums[cur]);
    }
};